import http from '@/api'
import { DbTableQuery, DbTableVO, TableQuery, TableVO, GenTableVO, DbTableForm } from '@/api/interface/tool/gen'
/**
 * @name 查询生成表数据
 * @param query {TableQuery} 参数
 * @returns 返回列表
 */
export const listTableApi = (query: TableQuery) => {
  return http.get<TableVO[]>('/tool/gen/list', query, { loading: true })
}

/**
 * @name 查询db数据库列表
 * @param query 参数
 * @returns 返回列表
 */
export const listDbTableApi = (query: DbTableQuery) => {
  return http.get<DbTableVO[]>('/tool/gen/db/list', query, { loading: true })
}

/**
 * @name 查询表详细信息
 * @param tableId tableId
 * @returns returns
 */
export const getTableApi = (tableId: string | number) => {
  return http.get<GenTableVO>(`/tool/gen/${tableId}`)
}

/**
 * @name 修改代码生成信息
 * @param data data
 * @returns returns
 */
export const updateGenTableApi = (data: DbTableForm) => {
  return http.put<GenTableVO>('/tool/gen', data, { loading: false })
}

/**
 * @name 导入表
 * @param data data
 * @returns returns
 */
export const importTableApi = (data: { tables: string }) => {
  return http.post<GenTableVO>('/tool/gen/importTable', data, { loading: false })
}

/**
 * @name 预览生成代码
 * @param tableId tableId
 * @returns returns
 */
export const previewTableApi = (tableId: string | number) => {
  return http.get<any>(`/tool/gen/preview/${tableId}`)
}

/**
 * @name 删除表数据
 * @param tableId tableId
 * @returns returns
 */
export const delTableApi = (tableId: string | number | Array<string | number>) => {
  return http.delete<any>(`/tool/gen/${tableId}`)
}

/**
 * @name 生成代码（自定义路径）
 * @param tableId tableId
 * @returns returns
 */
export const genCodeApi = (tableId: string | number) => {
  return http.get<any>(`/tool/gen/genCode/${tableId}`)
}

/**
 * @name 同步数据库
 * @param tableId tableName
 * @returns returns
 */
export const synchDbApi = (tableId: string | number) => {
  return http.get<any>(`/tool/gen/syncDb/${tableId}`)
}

/**
 * @name 生成代码操作
 * @param tableId tableId
 * @returns returns
 */
export const batchGenCodeApi = (tableId: string | number) => {
  return http.downloadGet(`/tool/gen/batchGenCode?tables=${tableId}`)
}
